package com.rabbitmq.demos.simple;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.utils.ConnectionUtil;
import com.rabbitmq.utils.RabbitConfig;

import java.io.IOException;

/**
 * 生产者
 */
public class Producer {

    public static void main(String[] args) throws Exception {
        // 获取到连接以及mq通道
        Connection connection = ConnectionUtil.getConnection();
        try (Channel channel = connection.createChannel()) {
            channel.queueDeclare(RabbitConfig.queue, false, false, false, null);
            String message = "Hello World,My Name is 题目222---55555!";
            /**
             * 2.发送消息:basicPublish(String exchange, String routingKey, boolean mandatory, BasicProperties props, byte[] body)
             *      exchange：指定交换机（rabbit中队列是在交换机exchange上绑定的,由交换机根据routingkey规则发送到指定队列）
             *
             *      routingKey：路由键（将消息具体发送到交换机哪一个队列的策略/规则）
             *
             *      mandatory：如果exchange根据自身类型和消息routeKey无法找到一个符合条件的queue，那么会调用basic.return方法将消息返还给生产者。false：出现上述情形broker会直接将消息扔掉
             *
             *      props： 请参考:https://blog.csdn.net/vbirdbest/article/details/78698364
             *
             *      body：消息内容
             */
            channel.basicPublish("", RabbitConfig.queue, null, message.getBytes("UTF-8"));
            System.out.println(" [x] Sent '" + message + "'");
        }finally {
            connection.close();
        }

    }
}
